СтрокиПамятки.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                        ОТДЕЛ СтрокиПамятки;
(*============================================================================* 
 * НАЗНАЧЕНИЕ: строки для Памятки
 *============================================================================*)
ИСПОЛЬЗУЕТ 
  Надел,
  Поле,
  Памятка,
  Окно ИЗ "..\Обмен\",
  Ввод ИЗ "..\Обмен\";
ВИД
  Доступ-=ДОСТУП К Вид;
  Вид-=НАБОР(Надел.Вид)
    памятка  :Памятка.Доступ;
    (* строки памятки: *) 
    последняя:ЦЕЛ;
    верхняя  :ЦЕЛ;
    текущая- :ЦЕЛ;
  КОН;

(******************************************************************************)
ЗАДАЧА Отрисовка(строки:Доступ);
ПЕР
  памятка:Памятка.Доступ;
  лк,пк,вс,нс:ЦЕЛ;
  цвет:ЗНАК;
  со:ЦЕЛ;     (* строка отображения *)
  строка:ЦЕЛ; (* памятки *)
УКАЗ
  лк:=строки.лк;
  пк:=строки.пк;
  вс:=строки.вс;
  нс:=строки.нс;
  памятка:=строки.памятка;
  строка:=строки.верхняя;
  ОТ со:=вс+1 ДО нс-1 ВЫП
    ЕСЛИ строка = строки.текущая ТО
      цвет:=Надел.цОтметкиСтрокиПамятки
    ИНАЧЕ
      цвет:=Надел.цСтроки
    КОН;
    Окно.ЦветнойПробел(со,лк,со,пк,цвет);
    Окно.Цепь(со,лк+1,со,пк-1,памятка.строки[строка]^);
    УВЕЛИЧИТЬ(строка)
  КОН;
  Окно.ЦветнойПробел(вс,лк,вс,пк,Надел.цСтроки);
  Окно.ЦветнойПробел(нс,лк,нс,пк,Надел.цСтроки);
  Окно.Рамка1(вс,лк,нс,пк)
КОН Отрисовка;

(******************************************************************************)
ЗАДАЧА СтрокуВыше(строки:Доступ);
УКАЗ
  ЕСЛИ строки.текущая > 0 ТО
    УМЕНЬШИТЬ(строки.текущая);
    ЕСЛИ строки.текущая < строки.верхняя ТО
      строки.верхняя:=строки.текущая
    КОН;
    Отрисовка(строки)
  КОН
КОН СтрокуВыше;

(******************************************************************************)
ЗАДАЧА СтрокуНиже(строки:Доступ);
УКАЗ
  ЕСЛИ строки.текущая < строки.последняя ТО
    УВЕЛИЧИТЬ(строки.текущая);
    ЕСЛИ строки.текущая > строки.верхняя+строки.нс-строки.вс-2 ТО
      строки.верхняя:=строки.текущая-строки.нс+строки.вс+2
    КОН;
    Отрисовка(строки)
  КОН
КОН СтрокуНиже;

(******************************************************************************)
ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка);
ПЕР
  строки:Доступ;
УКАЗ
  строки:=надел(Доступ);
  ДЛЯ посылка ВИДА
  | Поле.Отрисовка:
      Отрисовка(строки)
  | Ввод.ОтМышки:
      посылка.отработана:=ВКЛ;
      ЕСЛИ Ввод.прокрут В посылка.события ТО
        ЕСЛИ посылка.прокрут > 0 ТО
          СтрокуВыше(строки)
        ИНАЧЕ
          СтрокуНиже(строки)
        КОН
      ИНАЧЕ (* нажали кнопку *)
        ЕСЛИ посылка.с = 0 ТО
          СтрокуВыше(строки)
        АЕСЛИ посылка.с = строки.нс-строки.вс ТО
          СтрокуНиже(строки)
        ИНАЧЕ
          строки.текущая:=строки.верхняя+посылка.с-1;
          Отрисовка(строки);
          посылка.отработана:=ОТКЛ
        КОН
      КОН
  | Ввод.ОтКлавиш:
      ВЫБРАТЬ посылка.код ИЗ      
      | 25H,26H: (* <-,^*)
          СтрокуВыше(строки);
          посылка.код:=0
      | 27H,28H: (* ->,V*)
          СтрокуНиже(строки);
          посылка.код:=0
      ИНАЧЕ
      КОН
  ИНАЧЕ
  КОН
КОН Приём;

(******************************************************************************)
ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ; памятка:Памятка.Доступ):Доступ;
ПЕР
  строки:Доступ;
УКАЗ
  СОЗДАТЬ(строки);
  Надел.Подготовить(строки,верх,лево,строк,колонок,{Надел.прВыбираемый},Приём);
  строки.памятка:=памятка;
  строки.последняя:=памятка.строк-1;
  ВОЗВРАТ строки
КОН Создать;

КОН СтрокиПамятки.

 
 


Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com

 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы